package com.ktjy.order.config;

import com.alibaba.cloud.nacos.NacosConfigManager;
import com.alibaba.nacos.api.config.listener.Listener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

/**
 * NacosReceiveConfig Nacos配置刷新监听配置类
 *
 * @author LILIBO
 * @since 2025-06-06
 */
@Slf4j
@Configuration
public class NacosReceiveConfig {

    /**
     * 项目启动时执行，监听Nacos配置文件变化，并执行自定义业务逻辑处理
     *
     * @param nacosConfigManager Nacos配置管理器
     */
    @Bean
    public ApplicationRunner applicationRunner(NacosConfigManager nacosConfigManager) {
        return args -> {
            // 监听Nacos配置文件cloud-service-order.yml，group为cloud-service-order
            nacosConfigManager.getConfigService().addListener("cloud-service-order.yml", "cloud-service-order", new Listener() {
                @Override
                public Executor getExecutor() {
                    return Executors.newSingleThreadExecutor(); // 线程池，用于异步执行监听器的回调方法
                }

                @Override
                public void receiveConfigInfo(String configInfo) {
                    // 接收到Nacos配置文件变化后的回调方法
                    log.info("Nacos配置文件cloud-service-order.yml发生变化，变更信息：\n{}", configInfo);
                    // 自定义业务逻辑处理（例如：邮件通知）
                    System.out.println("邮件通知...");
                }
            });
        };
    }

}
